TOP

SQL ANY и ALL Операторы

SQL ANY и ALL Описание

Операторы SQL ANY и ALL позволяют выполнять сравнение между значением одного столбца и диапазоном других значений.


SQL ANY Описание

Оператор ANY:

  • возвращает логическое значение как результат
  • возвращает TRUE, если ANY из значений подзапроса соответствует условию
  • ANY означает, что условие будет истинным, если операция истинна для любого из значений в диапазоне.

    ANY Синтаксис

    SELECT column_name(s)
    FROM table_name
    WHERE column_name operator ANY
      (SELECT column_name
       FROM table_name
       WHERE condition)
    
    Оператор должен быть стандартным оператором сравнения (=, <>, !=, >, >=, <, or <=).

    SQL ALL Описание

    Оператор ALL:

  • возвращает логическое значение как результат
  • возвращает TRUE, если ALL значения подзапроса соответствуют условию
  • используется с операторами SELECT, WHERE и HAVING
  • ALL означает, что условие будет истинным только если операция будет истинной для всех значений в диапазоне.

    ALL Синтаксис вместе с SELECT

    SELECT ALL column_name(s)
    FROM table_name
    WHERE condition
    

    ALL Синтаксис вместе с WHERE или HAVING

    SELECT column_name(s)
    FROM table_name
    WHERE column_name operator ALL
      (SELECT column_name
       FROM table_name
       WHERE condition)
    
    Оператор должен быть стандартным оператором сравнения (=, <>, !=, >, >=, <, or <=).

    Демонстрационная база данных

    Ниже приведена выборка из таблицы "Products" ("Продукты") базы данных "Northwind":

    ProductIDProductNameSupplierIDCategoryIDUnitPrice
    1Chais1110 boxes x 20 bags18.00
    2Chang1124 - 12 oz bottles19.00
    3Aniseed Syrup1212 - 550 ml bottles10.00
    4Chef Anton's Cajun Seasoning2248 - 6 oz jars22.00
    5Chef Anton's Gumbo Mix2236 boxes21.35
    6Grandma's Boysenberry Spread3212 - 8 oz jars25.00
    7Uncle Bob's Organic Dried Pears3712 - 1 lb pkgs.30.00
    8Northwoods Cranberry Sauce3212 - 12 oz jars40.00
    9Mishi Kobe Niku4618 - 500 g pkgs.97.00
    10Ikura4812 - 200 ml jars31.00

    И выборка из таблицы "OrderDetails" ("Детали заказа"):

    OrderDetailIDOrderIDProductIDQuantity
    1102481112
    2102484210
    310248725
    410249149
    5102495140
    6102504110
    7102505135
    8102506515
    910251226
    10102515715

    SQL ANY Примеры

    Следующий SQL-запрос перечисляет ProductName, если он находит любую (ANY) запись в таблице OrderDetails со значением Quantity, равном 10 (это вернет TRUE, поскольку столбец Qu

    Run SQLSELECT ProductName
    FROM Products
    WHERE ProductID = ANY
      (SELECT ProductID
       FROM OrderDetails
       WHERE Quantity = 10)
    

    Следующий SQL-запрос перечисляет ProductName, если он находит любую (ANY) запись в таблице OrderDetails с количеством более 99 (это вернет TRUE, поскольку столбец Quantity содержит некоторые значения, больше

    Run SQLSELECT ProductName
    FROM Products
    WHERE ProductID = ANY
      (SELECT ProductID
       FROM OrderDetails
       WHERE Quantity > 99)
    

    Еще одна инструкция SQL перечисляет ProductName, если она находит любую (ANY) запись в таблице OrderDetails с количеством более 1000 (это вернет значение FALSE, поскольку столбец Quantityt00_ не содержит знаков

    Run SQLSELECT ProductName
    FROM Products
    WHERE ProductID = ANY
      (SELECT ProductID
       FROM OrderDetails
       WHERE Quantity > 1000)
    

    SQL ALL Примеры

    Следующий оператор SQL перечисляет все (ALL) названия продуктов:

    Run SQLSELECT ALL ProductName
    FROM Products
    WHERE TRUE
    

    Следующий оператор SQL содержит список ProductName, если все (ALL) записи в таблице OrderDetails имеют количество равное 10. Конечно, это вернет FALSE, поскольку столбец Quantity имеет много разных значений (не только значение 10):

    Run SQLSELECT ProductName
    FROM Products
    WHERE ProductID = ALL
      (SELECT ProductID
       FROM OrderDetails
       WHERE Quantity = 10)